package com.penghaisoft.microwms.product.service;


import com.penghaisoft.microwms.common.dto.ProCountingDto;
import com.penghaisoft.microwms.common.dto.ProStorageDto;
import com.penghaisoft.microwms.common.dto.ProStorageSnDto;
import com.penghaisoft.microwms.common.dto.Resp;
import com.penghaisoft.microwms.common.dto.TransResult;
import com.penghaisoft.microwms.common.page.Pager;
import com.penghaisoft.microwms.common.wms.model.ProStorageSn;
import com.penghaisoft.microwms.common.wms.model.RawLockLog;

import java.util.List;

/**
 * @Description 成品库存明细表 service
 * @author luoteng
 * @date 2018年6月6日 下午2:50:00 
 * @version 1.0
 */
public interface IProStorageSnService{
	
	public Resp create(ProStorageSn proStorageSn);

	public Resp delete(ProStorageSn proStorageSn);
	
	public Pager<ProStorageSn> findListByCondition(int page, int rows,ProStorageSn condition);
	
	public ProStorageSn findById(String id);
	
	public Resp update(ProStorageSn proStorageSn);

	public Pager<ProStorageDto> findStorageListByCondition(int page, int rows, ProStorageDto proStorageDto);

	public List<ProStorageSn> queryByAny(ProStorageSn proStorageSn);

	/** 
	* @Title: queryLose 
	* @Description:根据盘点单号，合同号 (型号类型)查询盘亏数据 
	* @param @param proCountingDto
	* @param @return  参数说明 
	* @return List<ProStorageSn>    返回类型
	* @author jzh 
	* @throws 
	*/
	public List<ProStorageSn> queryLose(ProCountingDto proCountingDto);
	/**
	 * @Description:成品冻结解冻查询
	 * @param proStorageSn
	 * @return
	 */
	public List<ProStorageSn> findProStorageSnByCondition(ProStorageSn proStorageSn);
	
	public List<ProStorageSn> queryProStorageSnByCondition(ProStorageSn proStorageSn);
	/**
	 * @Description:成品冻结解冻
	 * @param proStorageSn
	 * @return
	 */
	Resp updateProStorageSnStatus(List<ProStorageSn> list, RawLockLog rawLockLog);

	public Resp updateProStorageSnWl(ProStorageSn proStorageSn);

	public Resp updateProStorageSn(ProStorageSn proStorageSn);
	
	public TransResult lockScan(ProStorageSnDto proStorageSnDto);
	
	public Resp lockConfirm(ProStorageSnDto proStorageSnDto);
	
	public TransResult moveScan(ProStorageSnDto proStorageSnDto);
	
	public Resp moveConfirm(ProStorageSnDto proStorageSnDto);

	public List<ProStorageSn> queryProStorageSnByCondition1(ProStorageSn proStorageSn);
}
